﻿//
// IRobotControllerAsyncContract.cs
//
// Authors:
//    Claus Jørgensen <10229@iha.dk>
//
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics.Contracts;

namespace RSD.Robot.Contracts
{
    [ContractClassFor(typeof(IRobotControllerAsync))]
    internal abstract class IRobotControllerAsyncContract : IRobotControllerAsync
    {
        #region IRobotControllerAsync Members

        public void InitializationAsync(InitializationMode mode, Action<bool> callback = null)
        {
            throw new NotImplementedException();
        }

        public void InitializationAsync(InitializationMode mode, SystemType systemType, Action<bool> callback = null)
        {
            throw new NotImplementedException();
        }

        public void HomeAsync(Axis axis, Action<bool> callback = null)
        {
            throw new NotImplementedException();
        }

        public void MoveJointAsync(Vector vector, Action<bool> callback = null)
        {
            Contract.Requires(vector != null);
        }

        public void MoveJointAsync(Vector vectorA, Vector vectorB, Action<bool> callback = null)
        {
            Contract.Requires(vectorA != null);
            Contract.Requires(vectorB != null);
        }

        public void MoveLinearAsync(Vector vector, Action<bool> callback = null)
        {
            Contract.Requires(vector != null);
        }

        public void MoveLinearAsync(Vector vectorA, Vector vectorB, Action<bool> callback = null)
        {
            Contract.Requires(vectorA != null);
            Contract.Requires(vectorB != null);
        }

        public void MoveConveyorBeltAsync(int velocity, Action<bool> callback = null)
        {
            Contract.Requires(velocity >= 0 || velocity <= 100);
        }

        public void OpenGripperAsync(Action<bool> callback = null)
        {
            throw new NotImplementedException();
        }

        public void CloseGripperAsync(Action<bool> callback = null)
        {
            throw new NotImplementedException();
        }

        #endregion
    }
}
